

#include "./BSP/ATK_MS53L0/atk_ms53l0.h"
#include "./SYSTEM/delay/delay.h"

/**
 * @brief       ATK-MS53L0模块硬件复位
 * @param       无
 * @retval      无
 * @note        通过控制XSH引脚产生复位信号，低电平有效，复位时间约30ms
 */
static void atk_ms53l0_hw_reset(void)
{
    ATK_MS53L0_XSH(0);    /* 拉低XSH引脚，开始复位 */
    delay_ms(30);         /* 保持复位状态30ms */
    ATK_MS53L0_XSH(1);    /* 拉高XSH引脚，结束复位 */
    delay_ms(30);         /* 等待模块稳定 */
}

/**
 * @brief       ATK-MS53L0模块硬件初始化
 * @param       无
 * @retval      无
 * @note        初始化模块的控制引脚，配置为推挽输出模式，并执行硬件复位
 */
void atk_ms53l0_hw_init(void)
{
    GPIO_InitTypeDef gpio_init_struct = {0};
    
    /* 使能XSH引脚的GPIO时钟 */
    ATK_MS53L0_XSH_GPIO_CLK_ENABLE();
    
    /* 配置XSH引脚为推挽输出模式 */
    gpio_init_struct.Pin    = ATK_MS53L0_XSH_GPIO_PIN;
    gpio_init_struct.Mode   = GPIO_MODE_OUTPUT_PP;          /* 推挽输出 */
    gpio_init_struct.Pull   = GPIO_PULLUP;                  /* 上拉 */
    gpio_init_struct.Speed  = GPIO_SPEED_FREQ_HIGH;         /* 高速 */
    HAL_GPIO_Init(ATK_MS53L0_XSH_GPIO_PORT, &gpio_init_struct);
    
    /* 执行模块硬件复位，确保模块处于初始状态 */
    atk_ms53l0_hw_reset();
}
